@@ -8,6 +8,11 @@ from pai2.basemodels import CreateUpdateMixin |
||
| 8 | 8 |
|
| 9 | 9 |
from utils.url_utils import img_url |
| 10 | 10 |
|
| 11 |
+from utils.redis.rgroup import get_group_photo_thumbup_flag |
|
| 12 |
+ |
|
| 13 |
+ |
|
| 14 |
+r = settings.REDIS_CACHE |
|
| 15 |
+ |
|
| 11 | 16 |
|
| 12 | 17 |
class GroupInfo(CreateUpdateMixin): |
| 13 | 18 |
APP_GROUP = 0 |
@@ -160,8 +165,7 @@ class GroupPhotoInfo(CreateUpdateMixin): |
||
| 160 | 165 |
def photo_thumbnail_url(self): |
| 161 | 166 |
return img_url(self.photo_thumbnail_path) |
| 162 | 167 |
|
| 163 |
- @property |
|
| 164 |
- def photo_info(self): |
|
| 168 |
+ def photo_info(self, user_id): |
|
| 165 | 169 |
try: |
| 166 | 170 |
group = GroupInfo.objects.get(group_id=self.group_id) |
| 167 | 171 |
except GroupInfo.DoesNotExist: |
@@ -171,6 +175,7 @@ class GroupPhotoInfo(CreateUpdateMixin): |
||
| 171 | 175 |
'group_name': group and group.group_name, |
| 172 | 176 |
'group_default_avatar': group and group.group_default_avatar, |
| 173 | 177 |
'group_avatar': group and group.group_avatar_url, |
| 178 |
+ 'group_from': group and group.group_from, |
|
| 174 | 179 |
'photo_id': self.pk, |
| 175 | 180 |
'photo_url': self.photo_url, |
| 176 | 181 |
'photo_w': self.photo_w, |
@@ -182,6 +187,7 @@ class GroupPhotoInfo(CreateUpdateMixin): |
||
| 182 | 187 |
'nickname': self.nickname, |
| 183 | 188 |
'avatar': self.avatar, |
| 184 | 189 |
'comment_num': self.comment_num, |
| 190 |
+ 'thumbup': get_group_photo_thumbup_flag(self.pk, user_id), |
|
| 185 | 191 |
'thumbup_num': self.thumbup_num, |
| 186 | 192 |
'photo_from': self.photo_from, |
| 187 | 193 |
'created_at': self.created_at.replace(microsecond=0), |
@@ -26,6 +26,7 @@ from utils.redis.rkeys import ( |
||
| 26 | 26 |
) |
| 27 | 27 |
from utils.redis.rkeys import GROUP_LAST_PHOTO_PK |
| 28 | 28 |
from utils.redis.rgroup import set_group_info, get_group_info, set_group_users_info, get_group_users_info |
| 29 |
+from utils.redis.rgroup import set_group_photo_thumbup_flag, del_group_photo_thumbup_flag, get_group_photo_thumbup_flag |
|
| 29 | 30 |
|
| 30 | 31 |
from utils.sql.raw import PAI2_HOME_API |
| 31 | 32 |
|
@@ -590,7 +591,7 @@ def flyimg_upload_api(request): |
||
| 590 | 591 |
'message': u'飞图上传成功', |
| 591 | 592 |
'data': {
|
| 592 | 593 |
'current_id': latest_photo and latest_photo.pk or current_id, |
| 593 |
- 'photos': [photo.photo_info for photo in group_photos], |
|
| 594 |
+ 'photos': [photo.photo_info(user_id) for photo in group_photos], |
|
| 594 | 595 |
} |
| 595 | 596 |
}) |
| 596 | 597 |
|
@@ -696,6 +697,9 @@ def thumbup_submit_api(request): |
||
| 696 | 697 |
photo_thumbup.thumbup = True |
| 697 | 698 |
photo_thumbup.save() |
| 698 | 699 |
|
| 700 |
+ # Redis 群组照片点赞数据缓存 |
|
| 701 |
+ set_group_photo_thumbup_flag(photo_id, user_id) |
|
| 702 |
+ |
|
| 699 | 703 |
# 群组照片点赞数更新 |
| 700 | 704 |
group_photo.thumbup_num += 1 |
| 701 | 705 |
group_photo.save() |
@@ -793,6 +797,9 @@ def thumbup_cancel_api(request): |
||
| 793 | 797 |
photo_thumbup.thumbup = False |
| 794 | 798 |
photo_thumbup.save() |
| 795 | 799 |
|
| 800 |
+ # Redis 群组照片点赞数据移除 |
|
| 801 |
+ del_group_photo_thumbup_flag(photo_id, user_id) |
|
| 802 |
+ |
|
| 796 | 803 |
# 群组照片点赞数更新 |
| 797 | 804 |
group_photo.thumbup_num -= 1 |
| 798 | 805 |
group_photo.save() |
@@ -872,6 +879,8 @@ def pai2_home_api(request): |
||
| 872 | 879 |
'created_at': row[18], |
| 873 | 880 |
} for row in rows] |
| 874 | 881 |
|
| 882 |
+ [row.update({'thumbup': get_group_photo_thumbup_flag(row['photo_id'], user_id)}) for row in rows]
|
|
| 883 |
+ |
|
| 875 | 884 |
return JsonResponse({
|
| 876 | 885 |
'status': 200, |
| 877 | 886 |
'message': u'获取首页列表成功', |
@@ -241,7 +241,7 @@ def session_detail_api(request, session): |
||
| 241 | 241 |
# 'count': photos.count(), |
| 242 | 242 |
# 'photos': [p.detail for p in photos], |
| 243 | 243 |
'current_id': latest_photo and latest_photo.pk or current_id, |
| 244 |
- 'photos': [photo.photo_info for photo in group_photos], |
|
| 244 |
+ 'photos': [photo.photo_info(user_id) for photo in group_photos], |
|
| 245 | 245 |
'group_id': group_id, |
| 246 | 246 |
'group': group_info, |
| 247 | 247 |
'user_id': user_id, |
@@ -3,7 +3,7 @@ |
||
| 3 | 3 |
from django.conf import settings |
| 4 | 4 |
from django.core.serializers.json import DjangoJSONEncoder |
| 5 | 5 |
|
| 6 |
-from utils.redis.rkeys import GROUP_INFO, GROUP_USERS_INFO, GROUP_LAST_PHOTO_PK |
|
| 6 |
+from utils.redis.rkeys import GROUP_INFO, GROUP_USERS_INFO, GROUP_PHOTO_THUMB_UP |
|
| 7 | 7 |
|
| 8 | 8 |
import json |
| 9 | 9 |
|
@@ -66,3 +66,26 @@ def get_group_users_info(group_id, user_id): |
||
| 66 | 66 |
if group_users and user_id != admin_id: |
| 67 | 67 |
[group_users.pop(k) for k in ['applying_count', 'applying']] |
| 68 | 68 |
return group_users |
| 69 |
+ |
|
| 70 |
+ |
|
| 71 |
+# 群组照片相关 |
|
| 72 |
+ |
|
| 73 |
+ |
|
| 74 |
+def set_group_photo_thumbup_flag(photo_id, user_id): |
|
| 75 |
+ r.set(GROUP_PHOTO_THUMB_UP % (photo_id, user_id)) |
|
| 76 |
+ |
|
| 77 |
+ |
|
| 78 |
+def del_group_photo_thumbup_flag(photo_id, user_id): |
|
| 79 |
+ r.delete(GROUP_PHOTO_THUMB_UP % (photo_id, user_id)) |
|
| 80 |
+ |
|
| 81 |
+ |
|
| 82 |
+def get_group_photo_thumbup_flag(photo_id, user_id): |
|
| 83 |
+ if r.exists(GROUP_PHOTO_THUMB_UP % (photo_id, user_id)): |
|
| 84 |
+ return True |
|
| 85 |
+ else: |
|
| 86 |
+ from group.models import PhotoThumbUpInfo |
|
| 87 |
+ if PhotoThumbUpInfo.objects.filter(photo_id=photo_id, user_id=user_id).exists(): |
|
| 88 |
+ set_group_photo_thumbup_flag(photo_id, user_id) |
|
| 89 |
+ return True |
|
| 90 |
+ else: |
|
| 91 |
+ return False |
@@ -15,6 +15,7 @@ GROUP_USERS_DELETED_SET = 'group:users:deleted:set:%s' # SET,群组用户移 |
||
| 15 | 15 |
GROUP_USERS_QUIT_SET = 'group:users:quit:set:%s' # SET,群组用户退出集合,group_id |
| 16 | 16 |
|
| 17 | 17 |
# 群组照片相关 |
| 18 |
+GROUP_PHOTO_THUMB_UP = 'group:photo:thumb:up:%s:%s' # STRING,群组照片用户点赞记录,photo_id、user_id |
|
| 18 | 19 |
GROUP_LAST_PHOTO_PK = 'group:last:photo:pk:%s' # STRING,群组最后一张照片PK,group_id |
| 19 | 20 |
|
| 20 | 21 |
# 系统消息相关 |